BM17 二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
虽然二分是最简单的算法之一,但是很久不写还是有很多点会忘记
func search( nums []int , target int ) int {
left, right := 0, len(nums) - 1
for left <= right {
mid := (right - left) / 2 + left
if nums[mid] == target {
return mid
} else if nums[mid] > target {
right = mid - 1
} else {
left = mid + 1
}
}
return -1
}
这里的 mid 应该使用
mid := (right - left) / 2 + left
这样可以避免算出负数
然后就是要加一或者减一,否则会陷入死循环
23/5/10
用时 13分钟